home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / newsgroups / misc.19981211-19990422 / 000418_news@watsun.cc.columbia.edu _Mon Mar 29 13:19:14 1999.msg < prev    next >
Internet Message Format  |  2020-01-01  |  4KB

  1. Return-Path: <news@watsun.cc.columbia.edu>
  2. Received: from newsmaster.cc.columbia.edu (newsmaster.cc.columbia.edu [128.59.59.30])
  3.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id NAA27829
  4.     for <kermit.misc@watsun.cc.columbia.edu>; Mon, 29 Mar 1999 13:19:14 -0500 (EST)
  5. Received: (from news@localhost)
  6.     by newsmaster.cc.columbia.edu (8.8.5/8.8.5) id NAA04015
  7.     for kermit.misc@watsun.cc.columbia.edu; Mon, 29 Mar 1999 13:05:56 -0500 (EST)
  8. X-Authentication-Warning: newsmaster.cc.columbia.edu: news set sender to <news> using -f
  9. From: dn5006@my-dejanews.com
  10. Subject: Inheritance in Kermit 95
  11. Date: Mon, 29 Mar 1999 15:57:20 GMT
  12. Organization: Deja News - The Leader in Internet Discussion
  13. Message-ID: <7do7sr$bm9$1@nnrp1.dejanews.com>
  14. To: kermit.misc@watsun.cc.columbia.edu
  15.  
  16. ; NO OBJECT-ORIENTED PROGRAMMING LEAVES HOME WITHOUT INHERITANCE.
  17. ; THE FOLLOWING SCRIPT DISPLAYS INHERITANCE IN KERMIT 95.
  18. ;
  19. ; CLASS PERSON IS THE BASE CLASS.
  20. ;
  21. ; CLASS EMPLOYEE DERIVES FROM CLASS PERSON. CLASS EMPLOYEE HAS
  22. ; ALL ATTRIBUTES AND BEHAVIOR OF CLASS PERSON AND SOME EXTRAS
  23. ;
  24. ; CLASS MANAGER DERIVES FROM CLASS EMPLOYEE. CLASS MANAGER HAS
  25. ; ALL ATTRIBUTES AND BEHAVIOR OF CLASS EMPLOYEE AND SOME EXTRAS
  26. ;
  27. ; THE KEY OF OBJECT-ORIENTED PROGRAMMING IN KERMIT 95 IS
  28. ; THE PROPER USAGE OF:
  29. ;
  30. ;            ASSIGN
  31. ;            _ASSIGN
  32. ;            DEFINE
  33. ;            _DEFINE
  34. ;
  35. ; ASSIGN EXPANDS ONLY R-VALUE VARIABLE.
  36. ; _ASSIGN EXPANDS BOTH L-VALUE AND R-VALUE VARIABLES.
  37. ; DEFINE EXPANDS NEITHER L-VALUE NOR _R-VALUE VARIABLES.
  38. ; _DEFINE EXPANDS ONLY L-VALUE VARIABLE.
  39.  
  40. define person {
  41.     local self
  42.     assign self \%1
  43.     _assign \m(self).age \%2
  44.     _assign \m(self).job \%3
  45.     _assign \m(self).introduce {
  46.         echo My name is \fcap(\%1)
  47.         echo I am \\m(\m(self).age) years old
  48.         echo I am a(n) \\m(\m(self).job)
  49.     }
  50.     _assign \m(self).destroy {
  51.         _define \m(self).age
  52.         _define \m(self).job
  53.         _define \m(self).introduce
  54.         _define \m(self).destroy
  55.     }
  56. }
  57.  
  58. define employee {
  59.     local self super \%s
  60.     assign self \%1
  61.     assign super person            ; DERIVES FROM PERSON
  62.     \m(super) {\%1} {\%2} {\%3}        ; CREATE BASE COMPONENTS
  63.     assign \%s \m(self).introduce        ; SAVE SUPER CLASS METHOD
  64.                                                 ; introduce
  65.     _assign \m(self).introduce {        ; OVERLOAD METHOD introduce
  66.         \m(\%s)                ; EXEC SUPER CLASS METHOD FIRST
  67.         echo I work for \%4        ; AND THIS EXTRA
  68.     }
  69. }
  70.  
  71. define manager {
  72.     local self super \%s
  73.     assign self \%1
  74.     assign super employee            ; DERIVES FROM EMPLOYEE
  75.     \m(super) {\%1} {\%2} {\%3} {\%4}    ; CREATE BASE COMPONENTS
  76.     assign \%s \m(self).introduce        ; SAVE SUPER CALSS METHOD
  77.                                                 ; introduce
  78.     _assign \m(self).introduce {        ; OVERLOAD METHOD introduce
  79.         \m(\%s)                ; EXEC SUPER CLASS METHOD FIRST
  80.         echo I am a manager        ; AND THIS EXTRA
  81.     }
  82.     _define \m(self).fire {            ; ADD THE NEW METHOD fire
  83.         echo {\%1, you are fired}
  84.     }
  85.     _define \m(self).offer {        ; ADD THE NEW METHOD hire
  86.         echo {\%1, I would like to offer you \%2}
  87.     }
  88. }
  89.  
  90. ; JANE IS A 27 YEARS YOUNG STUDENT
  91. person Jane 27 student
  92. Jane.introduce
  93. echo
  94.  
  95. ; MARK IS A 36 YEARS OLD PROGRAMMER WORKING FOR BT&T
  96. employee Mark 36 programmer BT&T
  97. Mark.introduce
  98. echo
  99.  
  100. ; MARIO IS A 24 YEARS OLD PROGRAMMERS WORKING FOR METAS
  101. employee Mario 24 programmer METAS
  102. Mario.introduce
  103. echo
  104.  
  105. ; BOB IS A 47 YEARS OLD ENGINEER WORKING FOR METAS AS A MANAGER
  106. manager Bob 47 Engineer METAS
  107. Bob.introduce
  108. echo
  109.  
  110. ; MARIO KNOWS NO DIFFERENCE BETWEEN DEFINE AND _DEFINE.
  111. ; Bob DECIDES TO FIRE HIM:
  112. Bob.fire Mario
  113. echo
  114.  
  115. ; MARK KNOWS THE DIFFERENCE BETWEEN ASSIGN AND _ASSIGN.
  116. ; Bob DECIDES TO MAKE HIM AN OFFER:
  117. Bob.offer Mark 100K
  118. echo
  119.  
  120.  
  121. Dat Nguyen
  122. Airline Telecommunications and Information Services
  123. 770 Sherbrooke West
  124. Montreal, Quebec
  125. Canada H3A 1G1
  126. Email dat.nguyen&sita.int
  127.  
  128. -----------== Posted via Deja News, The Discussion Network ==----------
  129. http://www.dejanews.com/       Search, Read, Discuss, or Start Your Own